<?php

class Lemar_Mime
{

	# Define some private variables
	private $mimeTypes;

	/**
	 * @desc Initiate variables and include mime types
	 * @param String $MIMEFile The MIME File location, if not changed, mime.types.php
	 * @return Nothing
	 */
	public function __construct ()
	{

		$types = array (
			'3dm' => 'x-world/x-3dmf' , '3dmf' => 'x-world/x-3dmf' , 'a' => 'application/octet-stream' , 'aab' => 'application/x-authorware-bin' , 'aam' => 'application/x-authorware-map' , 'aas' => 'application/x-authorware-seg' , 'abc' => 'text/vnd.abc' , 'acgi' => 'text/html' , 'afl' => 'video/animaflex' , 'ai' => 'application/postscript' , 'aif' => 'audio/aiff' , 'aif' => 'audio/x-aiff' , 'aifc' => 'audio/aiff' , 'aifc' => 'audio/x-aiff' , 'aiff' => 'audio/aiff' , 'aiff' => 'audio/x-aiff' , 'aim' => 'application/x-aim' , 'aip' => 'text/x-audiosoft-intra' , 'ani' => 'application/x-navi-animation' , 'aos' => 'application/x-nokia-9000-communicator-add-on-software' , 'aps' => 'application/mime' , 'arc' => 'application/octet-stream' , 'arj' => 'application/arj' , 'arj' => 'application/octet-stream' , 'art' => 'image/x-jg' , 'asf' => 'video/x-ms-asf' , 'asm' => 'text/x-asm' , 'asp' => 'text/asp' , 'asx' => 'application/x-mplayer2' , 'asx' => 'video/x-ms-asf' , 'asx' => 'video/x-ms-asf-plugin' , 'au' => 'audio/basic' , 'au' => 'audio/x-au' , 'avi' => 'application/x-troff-msvideo' , 'avi' => 'video/avi' , 'avi' => 'video/msvideo' , 'avi' => 'video/x-msvideo' , 'avs' => 'video/avs-video' , 'bcpio' => 'application/x-bcpio' , 'bin' => 'application/mac-binary' , 'bin' => 'application/macbinary' , 'bin' => 'application/octet-stream' , 'bin' => 'application/x-binary' , 'bin' => 'application/x-macbinary' , 'bm' => 'image/bmp' , 'bmp' => 'image/bmp' , 'bmp' => 'image/x-windows-bmp' , 'boo' => 'application/book' , 'book' => 'application/book' , 'boz' => 'application/x-bzip2' , 'bsh' => 'application/x-bsh' , 'bz' => 'application/x-bzip' , 'bz2' => 'application/x-bzip2' , 'c' => 'text/plain' , 'c' => 'text/x-c' , 'c++' => 'text/plain' , 'cat' => 'application/vnd.ms-pki.seccat' , 'cc' => 'text/plain' , 'cc' => 'text/x-c' , 'ccad' => 'application/clariscad' , 'cco' => 'application/x-cocoa' , 'cdf' => 'application/cdf' , 'cdf' => 'application/x-cdf' , 'cdf' => 'application/x-netcdf' , 'cer' => 'application/pkix-cert' , 'cer' => 'application/x-x509-ca-cert' , 'cha' => 'application/x-chat' , 'chat' => 'application/x-chat' , 'class' => 'application/java' , 'class' => 'application/java-byte-code' , 'class' => 'application/x-java-class' , 'com' => 'application/octet-stream' , 'com' => 'text/plain' , 'conf' => 'text/plain' , 'cpio' => 'application/x-cpio' , 'cpp' => 'text/x-c' , 'cpt' => 'application/mac-compactpro' , 'cpt' => 'application/x-compactpro' , 'cpt' => 'application/x-cpt' , 'crl' => 'application/pkcs-crl' , 'crl' => 'application/pkix-crl' , 'crt' => 'application/pkix-cert' , 'crt' => 'application/x-x509-ca-cert' , 'crt' => 'application/x-x509-user-cert' , 'csh' => 'application/x-csh' , 'csh' => 'text/x-script.csh' , 'css' => 'application/x-pointplus' , 'css' => 'text/css' , 'cxx' => 'text/plain' , 'dcr' => 'application/x-director' , 'deepv' => 'application/x-deepv' , 'def' => 'text/plain' , 'der' => 'application/x-x509-ca-cert' , 'dif' => 'video/x-dv' , 'dir' => 'application/x-director' , 'dl' => 'video/dl' , 'dl' => 'video/x-dl' , 'doc' => 'application/msword' , 'docx' => 'application/msword' , 'dot' => 'application/msword' , 'dp' => 'application/commonground' , 'drw' => 'application/drafting' , 'dump' => 'application/octet-stream' , 'dv' => 'video/x-dv' , 'dvi' => 'application/x-dvi' , 'dwf' => 'model/vnd.dwf' , 'dwg' => 'application/acad' , 'dwg' => 'image/vnd.dwg' , 'dwg' => 'image/x-dwg' , 'dxf' => 'application/dxf' , 'dxf' => 'image/vnd.dwg' , 'dxf' => 'image/x-dwg' , 'dxr' => 'application/x-director' , 'el' => 'text/x-script.elisp' , 'elc' => 'application/x-bytecode.elisp' , 'elc' => 'application/x-elc' , 'env' => 'application/x-envoy' , 'eps' => 'application/postscript' , 'es' => 'application/x-esrehber' , 'etx' => 'text/x-setext' , 'evy' => 'application/envoy' , 'evy' => 'application/x-envoy' , 'exe' => 'application/octet-stream' , 'f' => 'text/plain' , 'f' => 'text/x-fortran' , 'f77' => 'text/x-fortran' , 'f90' => 'text/plain' , 'f90' => 'text/x-fortran' , 'fdf' => 'application/vnd.fdf' , 'fif' => 'application/fractals' , 'fif' => 'image/fif' , 'fli' => 'video/fli' , 'fli' => 'video/x-fli' , 'flo' => 'image/florian' , 'flx' => 'text/vnd.fmi.flexstor' , 'fmf' => 'video/x-atomic3d-feature' , 'for' => 'text/plain' , 'for' => 'text/x-fortran' , 'fpx' => 'image/vnd.fpx' , 'fpx' => 'image/vnd.net-fpx' , 'frl' => 'application/freeloader' , 'funk' => 'audio/make' , 'g' => 'text/plain' , 'g3' => 'image/g3fax' , 'gif' => 'image/gif' , 'gl' => 'video/gl' , 'gl' => 'video/x-gl' , 'gsd' => 'audio/x-gsm' , 'gsm' => 'audio/x-gsm' , 'gsp' => 'application/x-gsp' , 'gss' => 'application/x-gss' , 'gtar' => 'application/x-gtar' , 'gz' => 'application/x-compressed' , 'gz' => 'application/x-gzip' , 'gzip' => 'application/x-gzip' , 'gzip' => 'multipart/x-gzip' , 'h' => 'text/plain' , 'h' => 'text/x-h' , 'hdf' => 'application/x-hdf' , 'help' => 'application/x-helpfile' , 'hgl' => 'application/vnd.hp-hpgl' , 'hh' => 'text/plain' , 'hh' => 'text/x-h' , 'hlb' => 'text/x-script' , 'hlp' => 'application/hlp' , 'hlp' => 'application/x-helpfile' , 'hlp' => 'application/x-winhelp' , 'hpg' => 'application/vnd.hp-hpgl' , 'hpgl' => 'application/vnd.hp-hpgl' , 'hqx' => 'application/binhex' , 'hqx' => 'application/binhex4' , 'hqx' => 'application/mac-binhex' , 'hqx' => 'application/mac-binhex40' , 'hqx' => 'application/x-binhex40' , 'hqx' => 'application/x-mac-binhex40' , 'hta' => 'application/hta' , 'htc' => 'text/x-component' , 'htm' => 'text/html' , 'html' => 'text/html' , 'htmls' => 'text/html' , 'htt' => 'text/webviewhtml' , 'htx' => 'text/html' , 'ice' => 'x-conference/x-cooltalk' , 'ico' => 'image/x-icon' , 'idc' => 'text/plain' , 'ief' => 'image/ief' , 'iefs' => 'image/ief' , 'iges' => 'application/iges' , 'iges' => 'model/iges' , 'igs' => 'application/iges' , 'igs' => 'model/iges' , 'ima' => 'application/x-ima' , 'imap' => 'application/x-httpd-imap' , 'inf' => 'application/inf' , 'ins' => 'application/x-internett-signup' , 'ip' => 'application/x-ip2' , 'isu' => 'video/x-isvideo' , 'it' => 'audio/it' , 'iv' => 'application/x-inventor' , 'ivr' => 'i-world/i-vrml' , 'ivy' => 'application/x-livescreen' , 'jam' => 'audio/x-jam' , 'jav' => 'text/plain' , 'jav' => 'text/x-java-source' , 'java' => 'text/plain' , 'java' => 'text/x-java-source' , 'jcm' => 'application/x-java-commerce' , 'jfif' => 'image/jpeg' , 'jfif' => 'image/pjpeg' , 'jfif-tbnl' => 'image/jpeg' , 'jpe' => 'image/jpeg' , 'jpe' => 'image/pjpeg' , 'jpeg' => 'image/jpeg' , 'jpeg' => 'image/pjpeg' , 'jpg' => 'image/jpeg' , 'jpg' => 'image/pjpeg' , 'jps' => 'image/x-jps' , 'js' => 'application/x-javascript' , 'jut' => 'image/jutvision' , 'kar' => 'audio/midi' , 'kar' => 'music/x-karaoke' , 'ksh' => 'application/x-ksh' , 'ksh' => 'text/x-script.ksh' , 'la' => 'audio/nspaudio' , 'la' => 'audio/x-nspaudio' , 'lam' => 'audio/x-liveaudio' , 'latex' => 'application/x-latex' , 'lha' => 'application/lha' , 'lha' => 'application/octet-stream' , 'lha' => 'application/x-lha' , 'lhx' => 'application/octet-stream' , 'list' => 'text/plain' , 'lma' => 'audio/nspaudio' , 'lma' => 'audio/x-nspaudio' , 'log' => 'text/plain' , 'lsp' => 'application/x-lisp' , 'lsp' => 'text/x-script.lisp' , 'lst' => 'text/plain' , 'lsx' => 'text/x-la-asf' , 'ltx' => 'application/x-latex' , 'lzh' => 'application/octet-stream' , 'lzh' => 'application/x-lzh' , 'lzx' => 'application/lzx' , 'lzx' => 'application/octet-stream' , 'lzx' => 'application/x-lzx' , 'm' => 'text/plain' , 'm' => 'text/x-m' , 'm1v' => 'video/mpeg' , 'm2a' => 'audio/mpeg' , 'm2v' => 'video/mpeg' , 'm3u' => 'audio/x-mpequrl' , 'man' => 'application/x-troff-man' , 'map' => 'application/x-navimap' , 'mar' => 'text/plain' , 'mbd' => 'application/mbedlet' , 'mc$' => 'application/x-magic-cap-package-1.0' , 'mcd' => 'application/mcad' , 'mcd' => 'application/x-mathcad' , 'mcf' => 'image/vasa' , 'mcf' => 'text/mcf' , 'mcp' => 'application/netmc' , 'me' => 'application/x-troff-me' , 'mht' => 'message/rfc822' , 'mhtml' => 'message/rfc822' , 'mid' => 'application/x-midi' , 'mid' => 'audio/midi' , 'mid' => 'audio/x-mid' , 'mid' => 'audio/x-midi' , 'mid' => 'music/crescendo' , 'mid' => 'x-music/x-midi' , 'midi' => 'application/x-midi' , 'midi' => 'audio/midi' , 'midi' => 'audio/x-mid' , 'midi' => 'audio/x-midi' , 'midi' => 'music/crescendo' , 'midi' => 'x-music/x-midi' , 'mif' => 'application/x-frame' , 'mif' => 'application/x-mif' , 'mime' => 'message/rfc822' , 'mime' => 'www/mime' , 'mjf' => 'audio/x-vnd.audioexplosion.mjuicemediafile' , 'mjpg' => 'video/x-motion-jpeg' , 'mm' => 'application/base64' , 'mm' => 'application/x-meme' , 'mme' => 'application/base64' , 'mod' => 'audio/mod' , 'mod' => 'audio/x-mod' , 'moov' => 'video/quicktime' , 'mov' => 'video/quicktime' , 'movie' => 'video/x-sgi-movie' , 'mp2' => 'audio/mpeg' , 'mp2' => 'audio/x-mpeg' , 'mp2' => 'video/mpeg' , 'mp2' => 'video/x-mpeg' , 'mp2' => 'video/x-mpeq2a' , 'mp3' => 'audio/mpeg3' , 'mp3' => 'audio/x-mpeg-3' , 'mp3' => 'video/mpeg' , 'mp3' => 'video/x-mpeg' , 'mpa' => 'audio/mpeg' , 'mpa' => 'video/mpeg' , 'mpc' => 'application/x-project' , 'mpe' => 'video/mpeg' , 'mpeg' => 'video/mpeg' , 'mpg' => 'audio/mpeg' , 'mpg' => 'video/mpeg' , 'mpga' => 'audio/mpeg' , 'mpp' => 'application/vnd.ms-project' , 'mpt' => 'application/x-project' , 'mpv' => 'application/x-project' , 'mpx' => 'application/x-project' , 'mrc' => 'application/marc' , 'ms' => 'application/x-troff-ms' , 'mv' => 'video/x-sgi-movie' , 'my' => 'audio/make' , 'mzz' => 'application/x-vnd.audioexplosion.mzz' , 'nap' => 'image/naplps' , 'naplps' => 'image/naplps' , 'nc' => 'application/x-netcdf' , 'ncm' => 'application/vnd.nokia.configuration-message' , 'nif' => 'image/x-niff' , 'niff' => 'image/x-niff' , 'nix' => 'application/x-mix-transfer' , 'nsc' => 'application/x-conference' , 'nvd' => 'application/x-navidoc' , 'o' => 'application/octet-stream' , 'oda' => 'application/oda' , 'omc' => 'application/x-omc' , 'omcd' => 'application/x-omcdatamaker' , 'omcr' => 'application/x-omcregerator' , 'p' => 'text/x-pascal' , 'p10' => 'application/pkcs10' , 'p10' => 'application/x-pkcs10' , 'p12' => 'application/pkcs-12' , 'p12' => 'application/x-pkcs12' , 'p7a' => 'application/x-pkcs7-signature' , 'p7c' => 'application/pkcs7-mime' , 'p7c' => 'application/x-pkcs7-mime' , 'p7m' => 'application/pkcs7-mime' , 'p7m' => 'application/x-pkcs7-mime' , 'p7r' => 'application/x-pkcs7-certreqresp' , 'p7s' => 'application/pkcs7-signature' , 'part' => 'application/pro_eng' , 'pas' => 'text/pascal' , 'pbm' => 'image/x-portable-bitmap' , 'pcl' => 'application/vnd.hp-pcl' , 'pcl' => 'application/x-pcl' , 'pct' => 'image/x-pict' , 'pcx' => 'image/x-pcx' , 'pdb' => 'chemical/x-pdb' , 'pdf' => 'application/pdf' , 'pfunk' => 'audio/make' , 'pfunk' => 'audio/make.my.funk' , 'pgm' => 'image/x-portable-graymap' , 'pgm' => 'image/x-portable-greymap' , 'pic' => 'image/pict' , 'pict' => 'image/pict' , 'pkg' => 'application/x-newton-compatible-pkg' , 'pko' => 'application/vnd.ms-pki.pko' , 'pl' => 'text/plain' , 'pl' => 'text/x-script.perl' , 'plx' => 'application/x-pixclscript' , 'pm' => 'image/x-xpixmap' , 'pm' => 'text/x-script.perl-module' , 'pm4' => 'application/x-pagemaker' , 'pm5' => 'application/x-pagemaker' , 'png' => 'image/png' , 'pnm' => 'application/x-portable-anymap' , 'pnm' => 'image/x-portable-anymap' , 'pot' => 'application/mspowerpoint' , 'pot' => 'application/vnd.ms-powerpoint' , 'pov' => 'model/x-pov' , 'ppa' => 'application/vnd.ms-powerpoint' , 'ppm' => 'image/x-portable-pixmap' , 'pps' => 'application/mspowerpoint' , 'pps' => 'application/vnd.ms-powerpoint' , 'ppt' => 'application/mspowerpoint' , 'ppt' => 'application/powerpoint' , 'ppt' => 'application/vnd.ms-powerpoint' , 'ppt' => 'application/x-mspowerpoint' , 'ppz' => 'application/mspowerpoint' , 'pre' => 'application/x-freelance' , 'prt' => 'application/pro_eng' , 'ps' => 'application/postscript' , 'psd' => 'application/octet-stream' , 'pvu' => 'paleovu/x-pv' , 'pwz' => 'application/vnd.ms-powerpoint' , 'py' => 'text/x-script.phyton' , 'pyc' => 'applicaiton/x-bytecode.python' , 'qcp' => 'audio/vnd.qcelp' , 'qd3' => 'x-world/x-3dmf' , 'qd3d' => 'x-world/x-3dmf' , 'qif' => 'image/x-quicktime' , 'qt' => 'video/quicktime' , 'qtc' => 'video/x-qtc' , 'qti' => 'image/x-quicktime' , 'qtif' => 'image/x-quicktime' , 'ra' => 'audio/x-pn-realaudio' , 'ra' => 'audio/x-pn-realaudio-plugin' , 'ra' => 'audio/x-realaudio' , 'ram' => 'audio/x-pn-realaudio' , 'ras' => 'application/x-cmu-raster' , 'ras' => 'image/cmu-raster' , 'ras' => 'image/x-cmu-raster' , 'rast' => 'image/cmu-raster' , 'rexx' => 'text/x-script.rexx' , 'rf' => 'image/vnd.rn-realflash' , 'rgb' => 'image/x-rgb' , 'rm' => 'application/vnd.rn-realmedia' , 'rm' => 'audio/x-pn-realaudio' , 'rmi' => 'audio/mid' , 'rmm' => 'audio/x-pn-realaudio' , 'rmp' => 'audio/x-pn-realaudio' , 'rmp' => 'audio/x-pn-realaudio-plugin' , 'rng' => 'application/ringing-tones' , 'rng' => 'application/vnd.nokia.ringing-tone' , 'rnx' => 'application/vnd.rn-realplayer' , 'roff' => 'application/x-troff' , 'rp' => 'image/vnd.rn-realpix' , 'rpm' => 'audio/x-pn-realaudio-plugin' , 'rt' => 'text/richtext' , 'rt' => 'text/vnd.rn-realtext' , 'rtf' => 'application/rtf' , 'rtf' => 'application/x-rtf' , 'rtf' => 'text/richtext' , 'rtx' => 'application/rtf' , 'rtx' => 'text/richtext' , 'rv' => 'video/vnd.rn-realvideo' , 's' => 'text/x-asm' , 's3m' => 'audio/s3m' , 'saveme' => 'application/octet-stream' , 'sbk' => 'application/x-tbook' , 'scm' => 'application/x-lotusscreencam' , 'scm' => 'text/x-script.guile' , 'scm' => 'text/x-script.scheme' , 'scm' => 'video/x-scm' , 'sdml' => 'text/plain' , 'sdp' => 'application/sdp' , 'sdp' => 'application/x-sdp' , 'sdr' => 'application/sounder' , 'sea' => 'application/sea' , 'sea' => 'application/x-sea' , 'set' => 'application/set' , 'sgm' => 'text/sgml' , 'sgm' => 'text/x-sgml' , 'sgml' => 'text/sgml' , 'sgml' => 'text/x-sgml' , 'sh' => 'application/x-bsh' , 'sh' => 'application/x-sh' , 'sh' => 'application/x-shar' , 'sh' => 'text/x-script.sh' , 'shar' => 'application/x-bsh' , 'shar' => 'application/x-shar' , 'shtml' => 'text/html' , 'shtml' => 'text/x-server-parsed-html' , 'sid' => 'audio/x-psid' , 'sit' => 'application/x-sit' , 'sit' => 'application/x-stuffit' , 'skd' => 'application/x-koan' , 'skm' => 'application/x-koan' , 'skp' => 'application/x-koan' , 'skt' => 'application/x-koan' , 'sl' => 'application/x-seelogo' , 'smi' => 'application/smil' , 'smil' => 'application/smil' , 'snd' => 'audio/basic' , 'snd' => 'audio/x-adpcm' , 'sol' => 'application/solids' , 'spc' => 'application/x-pkcs7-certificates' , 'spc' => 'text/x-speech' , 'spl' => 'application/futuresplash' , 'spr' => 'application/x-sprite' , 'sprite' => 'application/x-sprite' , 'src' => 'application/x-wais-source' , 'ssi' => 'text/x-server-parsed-html' , 'ssm' => 'application/streamingmedia' , 'sst' => 'application/vnd.ms-pki.certstore' , 'step' => 'application/step' , 'stl' => 'application/sla' , 'stl' => 'application/vnd.ms-pki.stl' , 'stl' => 'application/x-navistyle' , 'stp' => 'application/step' , 'sv4cpio' => 'application/x-sv4cpio' , 'sv4crc' => 'application/x-sv4crc' , 'svf' => 'image/vnd.dwg' , 'svf' => 'image/x-dwg' , 'svr' => 'application/x-world' , 'svr' => 'x-world/x-svr' , 'swf' => 'application/x-shockwave-flash' , 't' => 'application/x-troff' , 'talk' => 'text/x-speech' , 'tar' => 'application/x-tar' , 'tbk' => 'application/toolbook' , 'tbk' => 'application/x-tbook' , 'tcl' => 'application/x-tcl' , 'tcl' => 'text/x-script.tcl' , 'tcsh' => 'text/x-script.tcsh' , 'tex' => 'application/x-tex' , 'texi' => 'application/x-texinfo' , 'texinfo' => 'application/x-texinfo' , 'text' => 'application/plain' , 'text' => 'text/plain' , 'tgz' => 'application/gnutar' , 'tgz' => 'application/x-compressed' , 'tif' => 'image/tiff' , 'tif' => 'image/x-tiff' , 'tiff' => 'image/tiff' , 'tiff' => 'image/x-tiff' , 'tr' => 'application/x-troff' , 'tsi' => 'audio/tsp-audio' , 'tsp' => 'application/dsptype' , 'tsp' => 'audio/tsplayer' , 'tsv' => 'text/tab-separated-values' , 'turbot' => 'image/florian' , 'txt' => 'text/plain' , 'uil' => 'text/x-uil' , 'uni' => 'text/uri-list' , 'unis' => 'text/uri-list' , 'unv' => 'application/i-deas' , 'uri' => 'text/uri-list' , 'uris' => 'text/uri-list' , 'ustar' => 'application/x-ustar' , 'ustar' => 'multipart/x-ustar' , 'uu' => 'application/octet-stream' , 'uu' => 'text/x-uuencode' , 'uue' => 'text/x-uuencode' , 'vcd' => 'application/x-cdlink' , 'vcs' => 'text/x-vcalendar' , 'vda' => 'application/vda' , 'vdo' => 'video/vdo' , 'vew' => 'application/groupwise' , 'viv' => 'video/vivo' , 'viv' => 'video/vnd.vivo' , 'vivo' => 'video/vivo' , 'vivo' => 'video/vnd.vivo' , 'vmd' => 'application/vocaltec-media-desc' , 'vmf' => 'application/vocaltec-media-file' , 'voc' => 'audio/voc' , 'voc' => 'audio/x-voc' , 'vos' => 'video/vosaic' , 'vox' => 'audio/voxware' , 'vqe' => 'audio/x-twinvq-plugin' , 'vqf' => 'audio/x-twinvq' , 'vql' => 'audio/x-twinvq-plugin' , 'vrml' => 'application/x-vrml' , 'vrml' => 'model/vrml' , 'vrml' => 'x-world/x-vrml' , 'vrt' => 'x-world/x-vrt' , 'vsd' => 'application/x-visio' , 'vst' => 'application/x-visio' , 'vsw' => 'application/x-visio' , 'w60' => 'application/wordperfect6.0' , 'w61' => 'application/wordperfect6.1' , 'w6w' => 'application/msword' , 'wav' => 'audio/wav' , 'wav' => 'audio/x-wav' , 'wb1' => 'application/x-qpro' , 'wbmp' => 'image/vnd.wap.wbmp' , 'web' => 'application/vnd.xara' , 'wiz' => 'application/msword' , 'wk1' => 'application/x-123' , 'wmf' => 'windows/metafile' , 'wml' => 'text/vnd.wap.wml' , 'wmlc' => 'application/vnd.wap.wmlc' , 'wmls' => 'text/vnd.wap.wmlscript' , 'wmlsc' => 'application/vnd.wap.wmlscriptc' , 'word' => 'application/msword' , 'wp' => 'application/wordperfect' , 'wp5' => 'application/wordperfect' , 'wp5' => 'application/wordperfect6.0' , 'wp6' => 'application/wordperfect' , 'wpd' => 'application/wordperfect' , 'wpd' => 'application/x-wpwin' , 'wq1' => 'application/x-lotus' , 'wri' => 'application/mswrite' , 'wri' => 'application/x-wri' , 'wrl' => 'application/x-world' , 'wrl' => 'model/vrml' , 'wrl' => 'x-world/x-vrml' , 'wrz' => 'model/vrml' , 'wrz' => 'x-world/x-vrml' , 'wsc' => 'text/scriplet' , 'wsrc' => 'application/x-wais-source' , 'wtk' => 'application/x-wintalk' , 'xbm' => 'image/x-xbitmap' , 'xbm' => 'image/x-xbm' , 'xbm' => 'image/xbm' , 'xdr' => 'video/x-amt-demorun' , 'xgz' => 'xgl/drawing' , 'xif' => 'image/vnd.xiff' , 'xl' => 'application/excel' , 'xla' => 'application/excel' , 'xla' => 'application/x-excel' , 'xla' => 'application/x-msexcel' , 'xlb' => 'application/excel' , 'xlb' => 'application/vnd.ms-excel' , 'xlb' => 'application/x-excel' , 'xlc' => 'application/excel' , 'xlc' => 'application/vnd.ms-excel' , 'xlc' => 'application/x-excel' , 'xld' => 'application/excel' , 'xld' => 'application/x-excel' , 'xlk' => 'application/excel' , 'xlk' => 'application/x-excel' , 'xll' => 'application/excel' , 'xll' => 'application/vnd.ms-excel' , 'xll' => 'application/x-excel' , 'xlm' => 'application/excel' , 'xlm' => 'application/vnd.ms-excel' , 'xlm' => 'application/x-excel' , 'xls' => 'application/excel' , 'xlsx' => 'application/excel' , 'xls' => 'application/vnd.ms-excel' , 'xls' => 'application/x-excel' , 'xls' => 'application/x-msexcel' , 'xlt' => 'application/excel' , 'xlt' => 'application/x-excel' , 'xlv' => 'application/excel' , 'xlv' => 'application/x-excel' , 'xlw' => 'application/excel' , 'xlw' => 'application/vnd.ms-excel' , 'xlw' => 'application/x-excel' , 'xlw' => 'application/x-msexcel' , 'xm' => 'audio/xm' , 'xml' => 'application/xml' , 'xml' => 'text/xml' , 'xmz' => 'xgl/movie' , 'xpix' => 'application/x-vnd.ls-xpix' , 'xpm' => 'image/x-xpixmap' , 'xpm' => 'image/xpm' , 'x-png' => 'image/png' , 'xsr' => 'video/x-amt-showrun' , 'xwd' => 'image/x-xwd' , 'xwd' => 'image/x-xwindowdump' , 'xyz' => 'chemical/x-pdb' , 'z' => 'application/x-compress' , 'z' => 'application/x-compressed' , 'zip' => 'application/x-compressed' , 'zip' => 'application/x-zip-compressed' , 'zip' => 'application/zip' , 'zip' => 'multipart/x-zip' , 'zoo' => 'application/octet-stream' , 'zsh' => 'text/x-script.zsh' , 'txt' => 'text/plain' , 'htm' => 'text/html' , 'html' => 'text/html' , 'php' => 'application/x-httpd-php' , 'phps' => 'application/x-httpd-phps' , 'css' => 'text/css' , 'js' => 'application/javascript' , 'json' => 'application/json' , 'xml' => 'application/xml' , 'swf' => 'application/x-shockwave-flash' , 'flv' => 'video/x-flv' , 'asc' => 'text/plain' , 'atom' => 'application/atom+xml' , 'bcpio' => 'application/x-bcpio' , 'png' => 'image/png' , 'jpe' => 'image/jpeg' , 'jpeg' => 'image/jpeg' , 'jpg' => 'image/jpeg' , 'gif' => 'image/gif' , 'bmp' => 'image/bmp' , 'ico' => 'image/vnd.microsoft.icon' , 'tiff' => 'image/tiff' , 'tif' => 'image/tiff' , 'svg' => 'image/svg+xml' , 'svgz' => 'image/svg+xml' , 'zip' => 'application/zip' , 'rar' => 'application/x-rar-compressed' , 'exe' => 'application/x-msdownload' , 'msi' => 'application/x-msdownload' , 'cab' => 'application/vnd.ms-cab-compressed' , 'mp3' => 'audio/mpeg' , 'qt' => 'video/quicktime' , 'mov' => 'video/quicktime' , 'au' => 'audio/basic' , 'avi' => 'video/x-msvideo' , 'pdf' => 'application/pdf' , 'psd' => 'image/vnd.adobe.photoshop' , 'ai' => 'application/postscript' , 'eps' => 'application/postscript' , 'ps' => 'application/postscript' , 'aif' => 'audio/x-aiff' , 'aifc' => 'audio/x-aiff' , 'aiff' => 'audio/x-aiff' , 'doc' => 'application/msword' , 'rtf' => 'application/rtf' , 'xls' => 'application/vnd.ms-excel' , 'ppt' => 'application/vnd.ms-powerpoint' , 'odt' => 'application/vnd.oasis.opendocument.text' , 'ods' => 'application/vnd.oasis.opendocument.spreadsheet' , 'swf' => 'application/x-shockwave-flash' , 'swf' => 'application/x-shockwave-flash2-preview' , 'swf' => 'application/futuresplash' , 'swf' => 'image/vnd.rn-realflash');
		
		$this->mimeTypes = $types;
		unset($types);
	}

	/**
	 * @desc Free up some memory
	 * @param None
	 * @returns Nothing
	 */
	public function __destruct ()
	{

		unset($this);
	}

	/**
	 * @desc Retrieve the corresponding MIME type, if one exists
	 * @param String $file File Name (relative location such as "image_test.jpg" or full "http://site.com/path/to/image_test.jpg")
	 * @return String $MIMEType - The type of the file passed in the argument
	 */
	public function getMimeType ($file = NULL)
	{

		if (is_file($file))
		{
			/**
			 * Attempts to retrieve file info from FINFO
			 * If FINFO functions are not available then try to retrieve MIME type from pre-defined MIMEs
			 * If MIME type doesn't exist, then try (as a last resort) to use the (deprecated) mime_content_type function
			 * If all else fails, just return application/octet-stream
			 */
			if (! function_exists("finfo_open"))
			{
				$extension = $this->getExtension($file);
				if (array_key_exists($extension, $this->mimeTypes))
				{
					return $this->mimeTypes[$extension];
				}
				else
				{
					if (function_exists("mime_content_type"))
					{
						$type = mime_content_type($file);
						return ! empty($type) ? $type : "application/octet-stream";
					}
					else
					{
						return "application/octet-stream";
					}
				}
			}
			else
			{
				$finfo = finfo_open(FILEINFO_MIME);
				$MIMEType = finfo_file($finfo, $file);
				finfo_close($finfo);
				return $MIMEType;
			}
		}
		else
			return "##INVALID_FILE##FILE=" . $file . "##";
	}

	/**
	 * @desc Gets the file extention from a string
	 * @param String $file The full file name
	 * @return String $ext The file extension
	 */
	private function getExtension ($file = NULL)
	{

		if (! is_null($file))
		{
			$arr = explode('.', $file);
			$ext = array_pop($arr);
			$ext = strtolower($ext);
			return $ext;
		}
		else
			return "##INVALID_FILE##FILE=" . $file . "##";
	}

	public function getFileType ($file = NULL)
	{

		if ($file)
		{
			$file = ' ' . $file;
			
			if (strpos($file, 'audio'))
			{
				return 'audio';
			}
			if (strpos($file, 'image'))
			{
				return 'images';
			}
			if (strpos($file, 'excel') or strpos($file, 'word') or strpos($file, 'pdf') or strpos($file, 'text/plain'))
			{
				return 'documents';
			}
		

		}
		return 'unknown';
	}


}

?>